package hotel.switchs.oversea.biz.service;

import hotel.base.oversea.service.BaseService;
import hotel.base.oversea.utils.Result;
import hotel.base.oversea.vo.meituan.request.room.CompareRoomForFpVO;
import hotel.switchs.oversea.api.VO.request.GetRoomListVo;
import hotel.switchs.oversea.api.VO.request.SetHotelOnlineVo;
import hotel.switchs.oversea.api.VO.request.SetHotelUpVo;
import hotel.switchs.oversea.api.entity.SwitchHotelUpEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Auther: 你的名字
 * @Date: 2020/09/23/14:23
 * @Description:
 */
@Service
public interface SwitchHotelUpService extends BaseService<SwitchHotelUpEntity> {
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 批量控制上架和下线
    */
    Result<Object> upHotelAllNew(SetHotelUpVo setHotelUpVo);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 修改售卖房型上架和下架
    */
    Result<Object> modifyHotelStatus(SetHotelUpVo setHotelUpVo);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 获取上架的酒店列表
     * @param getRoomListVo
    */
    Result<Object> getHotelList(GetRoomListVo getRoomListVo);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 上传execel
    */
    Result<Object> upExecel(MultipartFile excelFile);
    /***
    * @Author: lmf
    * @Date: 2020/9/30
     * 酒店缓存设置
    */
    Result<Object> cacheOperator(SetHotelUpVo setHotelUpVo);

    Result<Object> getUpHotelAsc();

    /**
     * 批量控制下线
     * @param setHotelUpVo
     * @return
     */
    Result<Object> downHotelAll(SetHotelUpVo setHotelUpVo);

    Result<Object> getUpHotelDesc();
    /**
     *
     * @author: lmf
     * @time: 2020/10/15 16:04
     * 酒店轮询
     */
    Result<Object> runHotel();
    /**
     *
     * @author: lmf
     * @time: 2020/10/16 17:15
     * 清空酒店所有缓存
     */
    Result<Object> removeALl();

    /**
    *@Description: 设置携程-美团酒店商品对应缓存
    *@return: boolean
    *@Author: Zhang·jz
    *@date: 2020/10/21
    */
    Result<Boolean> setRedisByUpHotelGoodsId();

    /**
     *@Description: 清除携程-美团酒店商品对应缓存
     *@return: boolean
     *@Author: Zhang·jz
     *@date: 2020/10/21
     */
    Result<Boolean> delRedisByUpHotelGoodsId();
    /**
     *
     * @author: lmf
     * @time: 2020/10/27 16:38
     * 导入酒店数据,开启酒店售卖
     */
    Result<Object> submitUploadSale(MultipartFile excelFile, Integer status);

    Result<Object> getUpHotelGoodsData();

    Result<Object> getUpHotelGoodsDataByHotelId(Integer mtHotelId);

    /**
     * 清除缓存和数据
     * @return
     */
    Result<Object> delErrorRomId();

    /**
     * <H1>获取上架的酒店列表</H1>
     *
     * @return hotel.base.oversea.utils.Result<java.lang.Object>
     * @author HuangT
     * @Date 2020/11/12 17:14
    */
    Result<List<CompareRoomForFpVO>> getUpHotelGoodsDataFp();

    /**
     * 添加上线所有酒店
     * @return
     */
    Result<Object> addHotel();

    /**
     * 添加美团的房型到缓存中key:mt_hotel_id+mt_room_id 作为效验房型是否失效的凭证
     * @return
     */
    Result<Object> addHotelRoomCache();

    Result<Object> getUpHotelGoodsDataForBasicRoom();
    /**
     * 添加美团的房型到缓存中key:mt_hotel_id+mt_room_id 作为效验房型是否失效的凭证
     * @return
     */
    Result<Object> addHotelGoodBreakfastCache();

    /**
     * 添加所有缓存
     * @return
     */
    Result<Object> addAllCache(Integer genre);

    /**
     * @author: lmf
     * @date: 2020/8/14 13:45
     * 设置酒店下线状态
     */
    Result<Object> downHotel(SetHotelOnlineVo setHotelOnlineVo);
    /***
    * @Author: lmf
    * @Date: 2020/12/8
     * 批量更新售卖房型房态价格
    */
    Result<Object> batchUpdateRoomPriceAndStatus();
    /***
    * @Author: lmf
    * @Date: 2020/12/24
     * 获取上架酒店列表供美团主动查询价格房态使用
     * @param genre
    */
    Result<Object> getUpHotelRpOrFtAsc(Integer genre);
    /***
    * @Author: lmf
    * @Date: 2020/12/25
     * 检查上架的酒店的房型是否有产品可以创建
    */
    Result<Object> checkSaleHotelRoomId();
    /***
    * @Author: lmf
    * @Date: 2020/12/31
     * 获取上架酒店无订单的列表
    */
    Result<Object> bookTimeCloseNoOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2020/12/31
     *
    */
    Result<Object> bookTimeStartNoOrderHotelList();
}
